package judesart.app.repository;

import java.util.List;

import judesart.app.domain.Artwork;
import judesart.app.domain.Note;
import judesart.app.domain.Project;
import judesart.app.domain.ProjectPhoto;
import judesart.app.domain.Sketch;
import judesart.app.shared.ValidationException;

public interface ProjectDAO {
    Project createProject(Project project) throws ValidationException;

    Project updateProject(Project project) throws ValidationException;

    void deleteProject(Long projectId);

    List<Project> findProjects(Long artistId, int startAt, int maxElements);

    List<Long> findProjectIdsByArtworkId(Long artworkId);

    int countProjects(Long artistId);

    Project findProjectById(Long projectId);

    Project addSketchToProject(Project Project, String fileName, String blobKey);

    Project deleteSketchFromProject(Project project, Long photoId);

    String findSketchKeyByImageId(Long imageId);

    Sketch updateSketchDescription(String sketchKey, String description);

    Project addPhotoToProject(Project Project, String fileName, String blobKey);

    Project deletePhotoFromProject(Project project, Long photoId);

    String findProjectKeyByImageId(Long imageId);

    ProjectPhoto updatePhotoDescription(String photoKey, String description);

    Project addArtworkToProject(Project Project, Artwork artwork);

    Project deleteArtworkFromProject(Project project, Artwork artwork);

    Project addNoteToProject(Project Project, String noteText);

    Project deleteNoteFromProject(Project project, String noteKey);

    Note updateNoteText(String noteKey, String noteText);
}
